package com.lemon.es.service;

import com.lemon.es.web.Page;
import org.elasticsearch.search.builder.SearchSourceBuilder;

/**
 * @author 李猛
 * @datetime 2024/2/22 15:45
 * @description 接口对象
 */
public interface EsService {
    /**
     * 添加
     *
     * @param index 索引
     * @param data  数据
     */
    void add(String index, Object data);

    /**
     * 根据ID获取数据
     *
     * @param index 索引
     * @param id
     * @return
     */
    <T> T getById(String index, String id, Class<T> tClass);

    /**
     * 分页查询
     *
     * @param index  索引
     * @param query  搜索条件
     * @param tClass 返回值
     * @return
     */
    <T> Page<T> page(String index, SearchSourceBuilder query, Class<T> tClass);

    /**
     * 根据ID删除数据
     *
     * @param index
     * @param id
     */
    void delById(String index, String id);

    /**
     * 创建索引
     *
     * @param index
     * @return
     */
    boolean createIndex(String index);

    /**
     * 删除索引
     *
     * @param index
     * @return
     */
    boolean deleteIndex(String index);
}
